def check_type():
    """
    判断字符串类型
    :return:
    """
    s1 = "abc"
    # isalnum：若string中至少有一个字符并且所有字符都是字母或数组，则返回true
    print(s1.isalnum())
    s2 = "123"
    # isdecimal:若string至少有一个字符并且所有字符都是字母或数字，则返回true
    print(s2.isdecimal())


def str_find():
    """
    字符串查找与替换
    :return:
    """
    s1 = "abcdefgcdef"
    # find：从下标start开始查找sub子串，若找到就返回开始下标,若未找到就返回-1
    print(s1.find("cd", 4))
    # 把字符串中的old_str子串替换成new_str子串，替换次数为count（若大于od_str存在也没事）
    s2 = s1.replace("cd", "CD", 1)
    print(s2)


def str_split_join():
    """
    分割与连接
    :return:
    """
    s1 = 'abc bcd 我很帅'
    # split：默认以' '来分割字符串
    print(s1.split())
    s1 = 'abc,bcd,我很帅'
    #        以','来分割字符串
    print(s1.split(','))

    s2 = 'abc\nbcd\nefg'
    # splitlines:只是换行，每行字符串的内容不做修改，默认不打印'\n'或'\r\n'
    print(s2.splitlines())
    #           方法里加True，则分割后依然打印'\n'或'\r\n'
    s3 = 'abc\r\nbcd\r\nefg'
    print(s3.splitlines(True))

    str_list = ['a', 'b', 'c', 'd']
    # str.join(list)：以str作为分隔符，将列表中的所有字符以str分割开
    print(','.join(str_list))
    # 打印结果：a,b,c,d


def study_r():
    """
    \r和\n的区别
    :return:
    """
    s1 = "abc\rd"
    print(s1)
    # 打印结果：d
    print("*" * 50)
    s2 = "abc\r\nd"
    print(s2)
    # 打印结果：abc
    #         d


def str_slice():
    """
    字符串的切片
    :return:
    """

    # 字符串[开始索引:结束索引:步长]
    # (1)指定的区间属于 左闭右开
    # (2)从头开始，开始索引 数字可以省略，冒号不能省略
    # (3)到末尾结束，结束索引 数字可以省略，冒号不能省略
    # (4)步长默认为1，如果连续切片，数字和冒号可以省略

    num_str = "0123456789"
    # 1. 截取从 2 ~ 5 位置 的字符串
    print(num_str[2:6])
    # 2. 截取从 2 ~ `末尾` 的字符串
    print(num_str[2:])
    # 3. 截取从 `开始` ~ 5 位置 的字符串
    print(num_str[:6])
    # 4. 截取完整的字符串
    print(num_str[:])
    # 5. 从开始位置，每隔一个字符截取字符串
    print(num_str[::2])
    # 6. 从索引 1 开始，每隔一个取一个
    print(num_str[1::2])
    # 倒序切片
    # -1 表示倒数第一个字符
    print(num_str[-1])
    # 7. 截取从 2 ~ `末尾 - 1` 的字符串
    print(num_str[2:-1])
    # 8. 截取字符串末尾两个字符
    print(num_str[-2:])
    # 9. 字符串的逆序（面试题）
    print(num_str[::-1])


def list_slice():
    # 将字符串强制转换成列表
    my_list = list("0123456789")
    print(my_list)
    print(my_list[2:6])


def index_count():
    hello_str="heallo hello"
    # len：统计字符串长度
    print(len(hello_str))
    # count：统计字符串中子串的个数
    print(hello_str.count("llo"))
    print(hello_str.count("abc"))
    # index:字符串中第一次出现该子串的下标
    print(hello_str.index("llo"))
    # #注意：如果使用index方法传递的子字符串不存在，程序会报错！
    # print(hello_str.index("abc"))


if __name__ == '__main__':
    # check_type()
    # str_find()
    # str_split_join()
    # study_r()
    # str_slice()
    # list_slice()
    index_count()